project(
  'syn',
  'rust',
  version : '2.0.87',
  license : 'MIT OR Apache-2.0',
)

rc = meson.get_compiler('rust')


rust_args = [
  '--cfg', 'feature="default"',
  '--cfg', 'feature="derive"',
  '--cfg', 'feature="parsing"',
  '--cfg', 'feature="printing"',
  '--cfg', 'feature="clone-impls"',
  '--cfg', 'feature="proc-macro"',
  '--cfg', 'feature="quote"',
  '--cfg', 'feature="full"',
  '--cfg', 'feature="visit-mut"',
]
if rc.version().version_compare('< 1.36')
  rust_args += ['--cfg', 'syn_omit_await_from_token_macro']
endif
if rc.version().version_compare('< 1.39')
  rust_args += ['--cfg', 'syn_no_const_vec_new']
endif
if rc.version().version_compare('< 1.40')
  rust_args += ['--cfg', 'syn_no_non_exhaustive']
endif
if rc.version().version_compare('< 1.56')
  rust_args += ['--cfg', 'syn_no_negative_literal_parse']
endif

u_ind = subproject('unicode-ident').get_variable('lib')
quote = subproject('quote').get_variable('lib')
pm2 = subproject('proc-macro2').get_variable('lib')


lib = static_library(
  'syn',
  'src/lib.rs',
  rust_args : rust_args,
  override_options : ['rust_std=2021', 'build.rust_std=2021'],
  link_with : [u_ind, quote, pm2],
  rust_abi : 'rust',
  native : true,
)

dep_syn = declare_dependency(
  link_with : [lib, u_ind, quote, pm2],
)
